home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1999 January - Disc 2 / Macworld (1999-01) (Disk 2).dmg / Serious Demos / Symbolic Composer 4.2 / Environment / System / CRESC / Lengths / length-inversion < prev    next >
Lisp/Scheme  |  1996-12-31  |  1KB  |  28 lines

  1. length-inversion length-pattern &optional value how
  2.  
  3. This function inverts a note-length into a rest length.
  4.  
  5. (setq rhy '(1/16 -1/16 1/8 1/4))
  6.  
  7. (setq rhyi (length-inversion rhy))
  8. --> (-1/16 1/16 -1/8 -1/4)
  9.  
  10. If the optional value and how paremeters are supplied, this function inverts note-lengths around a set <value>. This results in a unique variant to any note-length list. It can then be 'scaled' to produce a chain of variants using different inversion values.
  11.  
  12. (setq rhy '(1/4 1/16 1/8 1/16))
  13.  
  14. (setq var1 (length-inversion rhy '1/4 :minus))
  15. --> (-1/4 3/16 1/8 3/16)
  16.  
  17. (setq var2 (length-inversion rhy '1/8 :minus))
  18. --> (-1/8 1/16 -1/8 1/16)
  19.  
  20. (setq var3 (length-inversion rhy '1/16 :plus))
  21. --> (-3/16 1/16 -1/16 1/16)
  22.  
  23. The <how> parameter offers alternative ways of dealing with the interpretation of the <value> when this appears in the note-length pattern.
  24.  
  25. The use of larger lengths for <value> than are present in the pattern has the result of producing interesting distortions.
  26.  
  27. (setq var4 (length-inversion rhy '1/2 :minus))
  28. --> (1/4 7/16 3/8 7/16)